/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dominio.servicio.impl;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.logging.Level;
import javax.inject.Inject;
import java.util.logging.Logger;
import org.springframework.stereotype.Service;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOCompraNotaDebito;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioCompraNotaDebito;
import pe.com.cotelasa.scp.entidad.CompraNotaDebito;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.ESTADO_RESULTADO;

/**
 *
 * @author WINDOWS 7
 */
@Service
public class ServicioCompraNotaDebitoImpl implements IServicioCompraNotaDebito, Serializable {

    @Inject
    private IDAOCompraNotaDebito daoCompraNotaDebito;

    @Override
    public Collection<CompraNotaDebito> listarCompraNotaDebitoActivos() throws ServiceException {
        try {
            return daoCompraNotaDebito.listarActivos(CompraNotaDebito.class);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public CompraNotaDebito conseguirCompraNotaDebitoPorId(Integer idCompraNotaDebito) throws ServiceException {
        try {
            return daoCompraNotaDebito.obtenerEntidadPorId(CompraNotaDebito.class, idCompraNotaDebito);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public ResultadoServicio guardarCompraNotaDebito(CompraNotaDebito compraNotaDebito) throws ServiceException {
        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            //banco.setId(5);
            compraNotaDebito.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
            daoCompraNotaDebito.insertar(compraNotaDebito);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }

    @Override
    public ResultadoServicio actualizarCompraNotaDebito(CompraNotaDebito compraNotaDebito) throws ServiceException {
        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            daoCompraNotaDebito.actualizar(compraNotaDebito);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }
    
    @Override
    public Collection<CompraNotaDebito> obtenerCompraNotaDebitoBusqueda(CompraNotaDebito compraNotaDebito, Date fechaInicio, Date fechaFinal) throws ServiceException {
        try {
            return daoCompraNotaDebito.obtenerCompraNotaDebitoBusqueda(compraNotaDebito, fechaInicio, fechaFinal);
        } catch (DAOException ex) {
            ex.printStackTrace();
            Logger.getLogger(ServicioCompraNotaDebitoImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new ServiceException(ex.getMessage(), ex);
        }
    }
}
